import { getToken, setToken, removeToken } from '@/utils/auth'
import { loginAPI, getUserInfoAPI, getuserAPI } from '@/api/user'
const state = {
  token: getToken(), // token
  userinfo: {} // 用户资料
}

const mutations = {
  // 存储token
  SETTOKEN(state, value) {
    // 把获取过来的值 赋值给token
    state.token = value
    // 同步给缓存
    setToken(value)
  },
  // 删除token
  REMOVETOKEN(state) {
    state.token = null // 将vuex中数据置空
    // 同步给缓存
    removeToken()
  },
  // 获取用户资料
  SETPROFILE(state, value) {
    state.userinfo = value
  },
  // 删除用户信息
  REMOVEPROFILE(state) {
    state.userinfo = {}
  }
}

const actions = {
  async setlogin(context, data) {
    const res = await loginAPI(data)
    context.commit('SETTOKEN', res)
  },
  async getUserInfo(context) {
    // 获取用户基本信息
    const result = await getUserInfoAPI()
    // 获取员工基本信息
    const res = await getuserAPI(result.userId)
    const baseResult = { ...result, ...res }
    // 获取用户的详情 用户的详情数据
    context.commit('SETPROFILE', baseResult) // 提交到mutations
    return result // 这里为什么要return呢 这里是给我们后期做权限的时候 留下的伏笔
  }
}

export default {
  // 开启命名空间
  namespaced: true,
  state,
  mutations,
  actions
}
